package systeme;

import rdp.RdP;

/**
 * Contient essentiellment la définition d'un graphe, c'est a dire :
 * le réseau de pétri associé
 * @author chris
 *
 */
/**
 * Exemple :
 * Place A (0) (1 jeton) ---> Transition [] ---> Place B (0) (0 jeton) : on aura
 * etats :
 *			A (0)	B(0)
 * etat 0 :	 X	
 * etat 1 :			X
 * 
 * succ :
 * 			
 * etat 0 :  	1
 */
public class GrapheRdp {
	RdP rdp;
	//Savoir si une place a un jeton ou non
	boolean [][] etats; 
	//etats[0][0]=true si au tout début la place 0 possède un jeton  
	//etats[0][1]=false
	//etats[1][0]=false
	//etats[0][1]=true
	//Pour chacun des états, on va avoir la liste des successeurs :
	int [][] succ;
	boolean [][] pre;
	public GrapheRdp(int id_rdp){
		switch(id_rdp){
		case 0 : 
			genererEtatsInitiaux(id_rdp);
			genererSuccesseurs(id_rdp);
			break;
		default : break;
		
		}
	}
		
	public boolean possedeJeton(int etat, int place){
		return etats[etat][place]==true;
	}
	public boolean[][] genererEtatsInitiaux(int id_rdp){
		boolean [][] mesEtats=null;
		if(id_rdp==0){
			mesEtats=new boolean[2][2];
			mesEtats[0][0]=true;
			mesEtats[0][1]=false;
			mesEtats[1][0]=false;
			mesEtats[1][1]=true;
		}
		return mesEtats;
	}
	public int[][] genererSuccesseurs(int id_rdp){
		int [][] mesTransitions=null;
		if(id_rdp==0){
			mesTransitions=new int[2][];
			mesTransitions[0]=new int[1];
			mesTransitions[1]=null;
		}
		return mesTransitions;
	}
	
	
}
//pre : précondition de chaque transition
